В высокопроизводительных устройствах скорость — это жизнь. Представьте, что видеокарта выполняет Z-буферизацию: она должна сортировать миллионы значений глубины в секунду, чтобы определить, какой пиксель находится ближе. Для этого инженеры полагаются на компаратор беззнаковых чисел, упрощённую схему, которая обрабатывает биты от старшего к младшему разряду без какого-либо дополнительного вычислительного издержка.
Провал представления в дополнительном коде
Стандартное представление в дополнительном коде не проходит этот «простой» тест аппаратных средств. Поскольку знаковый бит равен 1 для отрицательных чисел и 0 для положительных, значение, например -1 (111...), по битовому порядку оказывается больше, чем +1 (001...). Это создаёт разрыв, заставляя аппаратные средства использовать сложную, медленную условную логику для определения величины.
Решение через монотонность
Чтобы восстановить эффективность, мы используем кодирование с избытком (представление с смещением). Сдвигая диапазон так, чтобы наименьшее возможное значение соответствовало 000... а наибольшее — 111..., мы гарантируем, что битовая последовательность однозначно определяет числовое значение таким образом, что её лексикографический порядок соответствует точно числовому порядку.
Это свойство позволяет «простым» аппаратным компараторам мгновенно обрабатывать «умные» данные с плавающей запятой.